/**
 * @author Q
 * @create 2025-07-13-14:25
 */

/**
 * 10.性能测试工具篇
 *      1.jmeter介绍
 *      2.重点组件
 *      3.测试报告
 */
public class Test {
    public static void main(String[] args) {
        /**
         * 3.测试报告
         *      Jmeter -n -t 脚本⽂件 -l ⽇志⽂件 -e -o ⽬录
         *           -n ： ⽆图形化运⾏
         *           -t ： 被运⾏的脚本
         *           -l ： 将运⾏信息写⼊⽇志⽂件，后缀为jtl的⽇志⽂件
         *           -e ： ⽣成测试报告
         *           -o ： 指定报告输出⽬录
         */
    }
    public static void main2(String[] args) {
        /**
         * 2.重点组件
         *      1.线程组：控制JMeter用于执行测试的线程数
         *          1.线程数：设置发送请求的次数
         *          2.Ramp-up时间（秒）：设置性能测试运行时间，单位为秒
         *          3.循环次数：
         *              1.配置指定次数：循环执行线程数次数
         *              2.永远
         *                  1.需要配置调度器
         *                  2.持续时间：线程数执行时间
         *                  3.启动延迟：要延迟多久再启动线程数
         *      2.Http取样器
         *          添加必需的配置（可以在浏览器中的网络插件Headers获得）
         *              1.http协议：http主机名/IP
         *              2.端口：
         *              3.请求方法：目录+参数，内容编码：utf-8，可写可不写
         *              4.参数：拼在路径中
         *       3.查看结果树
         *          1.取样器结果
         *              Thread Name：线程组名称
         *              Sample time:发送请求时间
         *              load time：响应时间
         *              Response code ：接⼝响应状态码
         *          2.请求：HTTP请求的请求头和请求体的详细信息
         *          3.响应：HTTP响应的响应头和响应体的详细信息
         *       4.HTTP Cookie管理器：添加了HTTP Cookie管理器后，会⾃动存储并发送Cookie
         *          线程组->添加->配置元件->HTTP Cookie管理器
         *          缓存配置可选择standard(标准)或compatibility(兼容的)
         *       5.HTTP请求默认值：设定http请求默认值，如果http请求输入了值，则不使用默认值
         *          线程组->添加->配置元件->HTTP请求默认值
         *       6.HTTP信息头管理：测试时，需要先登录才能进行测试接口，填写信息头，默认都登录（会过期），放到同级目录
         *          线程组->添加->配置元件->HTTP信息头管理（User_token_header：登录配置，浏览器中登录接口中获取）
         *       7.用户定义的变量：有一个变量会有多个请求使用，且是写死的情况下
         *          线程组->添加->配置元件->用户定义的变量
         *       8.CSV数据文件配置：模拟真实环境
         *          线程组->配置元件->CSV数据⽂件设置
         *          1.CSV数据文件设置
         *              ⽂件名：填写csv⽂件的路径。建议使⽤绝对路径。文件位置
         *              ⽂件编码：UTF-8
         *              变量名称：从csv数据⽂件中读起的数据需要保存到的变量名。有多个变量时⽤逗号分隔，（csv文件的每行的变量个数）
         *              是否忽略⾸⾏：是否从csv数据⽂件第⼀⾏开始读取。
         *              分隔符：要求与csv数据⽂件中多列的分隔符⼀致
         *              遇到⽂件结束符再次循环：若选择为True当数据不够的时候会从头取。若选择False，则需要勾选下⾯的配置，遇到⽂件结束符停⽌线程，这⾥如果不勾选，请求将会报错。
         *           2.编写csv文件
         *           3.修改参数
         *           4.修改线程组数
         *           5.执行
         *       9.JSON提取器（此处用于配置6.HTTP信息头管理，使信息头会变化）放入到登录中，不要放到同级目录
         *          1.添加JSON提取器
         *          2.写JSON调用名：变量名,写出获取到的凭证方法：$.name(根目录.根目录下的名称，自上向下提取)
         *          3.将调用名放入信息头中，${变量名}
         *       10.JSON断言：自动判断测试用例
         *          1.添加断言
         *          2.添加获取断言语句
         *          3.精确匹配断言值
         *          4.支持正则匹配（使用正则表达式就勾选，用于匹配变化的数据）
         *          5.添加断言值
         *       11.同步定时器：实现并发效果
         *          线程组->添加->定时器->sy...
         *          模拟用户组数量：必须达到这个数量，才会并发执行，否则就一直等待，线程数要和用户组数量成整数倍（用户组数量不能大于线程数）
         *       12.事务控制器：可以将多个控制器合并在事务中，测试时间
         *          线程组->添加->逻辑控制器->事务控制器
         *       13.安装插件
         *          1.梯度压测线程组
         *              This group will start：启动多少个线程，同线程组中的线程数（线程数）
         *              First, wait for：等待多少秒才开始压测，⼀般默认为0（开始时间）
         *              Then start：⼀开始有多少个线程数，⼀般默认为0（要准备多少线程数）
         *              Next,add：下⼀次增加多少个线程数
         *              threads every：当前运⾏多⻓时间后再次启动线程,即每⼀次线程启动完成之后的的持续时间;（每隔多久再次启动线程）
         *              using ramp-up:启动线程的时间;若设置为5秒,表⽰每次启动线程都持续5秒（线程多长时间内完成）
         *              thenhold loadfor：线程全部启动完之后持续运⾏多⻓时间（总线程持续时间）
         *              finally,stop/threadsevery：多⻓时间释放多少个线程；若设置为5个和1秒，表⽰持续负载结束之后每1秒钟释放5个线程
         *       14.常见监听器
         *          1.聚合报告：从聚合报告可以看到性能测试过程中整体的数据变化
         *          2.Response Times Over Time：监听整个事务运⾏期间的响应时间
         *          3.TPS
         */
    }
    public static void main1 (String[] args) {
        /**
         * 1.jmeter介绍
         *      4.jmeter基本使用流程
         *          1.启动jmeter
         *          2.在”测试计划“->下添加->“线程组”
         *          3.在线程组下->添加取样器的->http请求
         *          4.填写http请求相关数据
         *          5.线程组下添加监视器-》查看结果树
         *          6.点击运行按钮查看接口测试结果
         *      5.JMeter元件作用域和执行顺序
         *          作⽤域：（如果是同级目录，则全部生效，如果是一个元件的子目录，则只对该元件生效）
         *              JMeter元件的作⽤域主要由测试计划的树形结构中的元件⽗⼦关系来确定。
         *          执⾏顺序：
         *          取样器(sampler)元件内组件不依赖其他元件就可执⾏，
         *          因此取样器不存在作⽤问题元件作⽤域只对它的⼦节点有作⽤，其他作⽤域默认根据测试计划中树形结构来定
         */
    }
}
